#Naudojamos bibliotekos
library(readr)
#Duomenu nuskaitymas, atrinkimas ir tvarkymas
duomenys<-read_csv("Atviri_TP_parko_duomenys.csv")
masinos<-subset(duomenys, duomenys$KATEGORIJA_KLASE=="M1", select = c(1,2,17,21,27,28,31,52,54,60))
masinos$Metai<-strtoi(substring(masinos$PIRM_REG_DATA,1,4))
masinos<-subset(masinos, masinos$MARKE!="Nuasmeninta")
#sukuriame masinos modelio pagal metus kintamaji
masinos<-transform(masinos, modelis=paste(masinos$KOMERCINIS_PAV, masinos$Metai))
#filtruojame 10 populiariausiu markiu lietuvoje
#pirma sukuriame lentele kuri suskaiciuoja visu markiu kieki ir surusiuoja mazejimo tvarka ir paima 10 didziausiu
markes<-data.frame(head(sort(table(masinos$MARKE),decreasing = T), n = 10))
#tada atsiskiriame vektoriu, kuris pades mums filtruoti masinas
popmarkes<-as.vector(markes[,1])
#atrenkame tik tas masinas, kurios yra vienos is 10 populiariausiu markiu lietuvoje
interaktDuom <- masinos[masinos$MARKE %in% popmarkes, ]
interaktDuom <- subset(interaktDuom, !is.na(interaktDuom$Metai)&interaktDuom$GALIA<1000)
#sukuriu nauja lentele kuri jau talpins grafikui paruostus duomenis
galutDuom <- data.frame("Marke" = 'a', "Modelis"='b', "Kiekis"=4, "Metai"=4, "Galia"=4, "Mase"=4, "Benzinas"=6,
"Dyzelinas"=2, "EV"=5)
names(galutDuom) <- c("Markė", "Modelis", "Kiekis", "Metai", "Galia", "Masė", "Benzinas", "Dyzelinas", "EV")
#atsispausdinu sau degalu tipus, kad matyciau, pagal ka suskirstyti toliau
table(interaktDuom$DEGALAI)
##
## -- Benzinas
## 68 187650
## Benzinas / Dujos Benzinas / Elektra
## 49730 16115
## Benzinas / Elektra / Dujos Benzinas / Etanolis
## 1777 176
## Benzinas / Etanolis / Dujos Benzinas / Gamtinės_dujos
## 22 129
## Benzinas / Suskystintos_dujos Dujos
## 1899 29
## Dyzelinas Dyzelinas / Dujos
## 736721 4
## Dyzelinas / Elektra Elektra
## 974 275
## Gamtinės_dujos
## 37
for(marke in popmarkes){
#padaro markes esancios populiariausiuju sarase poaibi
temp1<-subset(interaktDuom, MARKE==marke)
#is gauto poaibio tik su viena marke randame populiariausiu modeliu lentele
temp2<-data.frame(head(sort(table(temp1$modelis),decreasing = T), n = 20))
#atrenkame popualiariausiu modeliu pavadinimus
popmodeliai<-as.vector(temp2[,1])
#sukame cikla per populiariausius modelius
for(modeliukas in popmodeliai){
#atrenkame tik konkreciu metu konkretu modeli
temp3<-subset(temp1, temp1$modelis == modeliukas)
#randame jo marke
tmarke<-head(temp3$MARKE,n=1)
#randame jo modeli (originalus, be pridetu metu)
tmodelis<-head(temp3$KOMERCINIS_PAV, n=1)
#suskaiciuojame, kiek ju isviso yra
tkiekis<-nrow(temp3)
#pasiimame jo metus
tmetai<-head(temp3$Metai,n=1)
#suskaiciuojame vidutine galia (tarp skirtingu kompletaciju gali skirtis galios)
tgalia<-round(mean(temp3$GALIA, na.rm = T),0)
#suskaiciuojame vidutine mase (tarp skirtingu kompletaciju gali skirtis mases)
tmase<-round(mean(temp3$NUOSAVA_MASE, na.rm = T),0)
#randame dali masinu, kuriu pagrindinis kuro tipas yra benzinas (isskyrus elektriniai hibridai)
tbenz<-round(nrow(subset(temp3, temp3$DEGALAI=="Benzinas"|temp3$DEGALAI=="Benzinas / Dujos"|
temp3$DEGALAI=="Benzinas / Etanolis"|temp3$DEGALAI=="Benzinas / Etanolis / Dujos"|
temp3$DEGALAI=="Benzinas / Gamtinės_dujos"|
temp3$DEGALAI=="Benzinas / Suskystintos_dujos"))/tkiekis*100, 2)
#randame dali masinu, kuriu pagrindinis kuro tipas yra dyzelinas (isskyrus elektriniai hibridai)
tdyz<-round(nrow(subset(temp3, temp3$DEGALAI=="Dyzelinas"|temp3$DEGALAI=="Dyzelinas / Dujos"))/tkiekis*100, 2)
#randame dali masinu, kurios yra elektrines/elektriniai hibridai
tev<-round(nrow(subset(temp3, temp3$DEGALAI=="Benzinas / Elektra"|temp3$DEGALAI=="Benzinas / Elektra / Dujos"|
temp3$DEGALAI=="Dyzelinas / Elektra"|temp3$DEGALAI=="Elektra"))/tkiekis*100, 2)
#pridedame surinktus duomenis apie modeli prie musu galutines lenteles
galutDuom[nrow(galutDuom) + 1,] <- c(tmarke, tmodelis, tkiekis, tmetai, tgalia, tmase, tbenz, tdyz, tev)
}
}
#Kadangi mano lenteleje yra kai kurie skaiciu stulpeliai charactrer ir pirmas stulpelis yra nereikalingas, tvarkome
#istriname pirma eilute
galutDuom = galutDuom[-1,]
#konvertuojame i numeric
cols_num <- c("Kiekis","Metai","Galia","Masė","Benzinas","Dyzelinas","EV")
galutDuom[cols_num] <- sapply(galutDuom[cols_num],as.numeric)
####################################################3
#grafiko piesimas
library(plotly)
#piesiame grafika pagal metus ir galia. Filtras bus marke, o uzvedus pele rasys daug papildomos informacijos
fig <- plot_ly(galutDuom, x = ~Metai, y = ~Galia, type = 'scatter', mode = 'markers', size = ~Kiekis, color = ~Markė,
colors = 'Paired', sizes = c(10, 50), marker = list(opacity = 0.7, sizemode = 'diameter'),
hoverinfo = 'text',
text = ~paste('Markė:', Markė, '<br>Modelis:', Modelis, '<br>Kiekis:', Kiekis, '<br>Metai:', Metai,
'<br>Vidutinė masė:', Masė,
'<br>Kuro pasiskirstymas(%):','<br>Benzinas:',Benzinas,'<br>Dyzelinas:',Dyzelinas,
'<br>EV:',EV))
#pridedame grafiko ir legendos pavadinima
fig <- fig %>% layout(title = 'Populiariausių modelių pasiskirstymas pagal metus ir galią',
legend=list(title=list(text='<b> Markė </b>')))
fig